package cn.edu.imnu.vacate.users.service.impl;

import java.util.List;
import java.util.Map;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import com.alibaba.fastjson.JSONObject;

import cn.edu.imnu.common.util.ConstatFinalUtil;
import cn.edu.imnu.common.util.PageInfoUtil;
import cn.edu.imnu.vacate.users.dao.IARoleDao;
import cn.edu.imnu.vacate.users.dao.IAUserDao;
import cn.edu.imnu.vacate.users.pojo.ARole;
import cn.edu.imnu.vacate.users.pojo.AUser;
import cn.edu.imnu.vacate.users.service.IUsersService;

/**
 * 用户相关的service实现类
 * @author MCR
 *
 */
@Service("usersService")
public class UsersServiceImpl implements IUsersService
{
	@Resource
	private IAUserDao UserDao;
	@Resource
	private IARoleDao roleDao;
	@Resource
	/*-------管理员操作的实现类开始-------*/
	/**
	 * 保存一条管理员
	 */
	@Override
	public JSONObject saveOneUserService(AUser User)
	{
		JSONObject resultJSON = new JSONObject();
		/*影响条数*/
		int res = this.UserDao.save(User);
		if(res > 0)
		{
			resultJSON.put("code","0");
			resultJSON.put("info", ConstatFinalUtil.INFO_JSON.get("0"));
			/*存储data*/
			JSONObject dataJSON	= new JSONObject();
			dataJSON.put("id", User.getId() + "");
			dataJSON.put("effect", res + "");
			/*data存放到resultJSON中*/
			resultJSON.put("data", dataJSON);
		}else
		{
			resultJSON.put("code", "1");
			resultJSON.put("info", ConstatFinalUtil.INFO_JSON.get("1"));
		}
		return resultJSON;
	}
	/**
	 * 更新一条管理员
	 */
	@Override
	public JSONObject updateOneUserService(AUser User)
	{
		JSONObject resultJSON = new JSONObject();
		/*影响条数*/
		int res = this.UserDao.update(User);
		/*判断*/
		if(res > 0)
		{
			resultJSON.put("code", "0");
			resultJSON.put("info", ConstatFinalUtil.INFO_JSON.get("0"));
			/*存储data*/
			JSONObject dataJSON = new JSONObject();
			dataJSON.put("id", User.getId() + "");
			dataJSON.put("effect", res + "");
			/*data存放resultJSON*/
			resultJSON.put("data", dataJSON);
		}else
		{
			resultJSON.put("code", "2");
			resultJSON.put("info", ConstatFinalUtil.INFO_JSON.get("2"));
		}
		return resultJSON;
	}
	/**
	 * 删除一条管理员
	 */
	@Override
	public JSONObject deleteOneUserService(AUser User)
	{
		JSONObject resultJSON = new JSONObject();
		/*影响条数*/
		int res = this.UserDao.delete(User);
		/*判断*/
		if(res > 0)
		{
			resultJSON.put("code", "0");
			resultJSON.put("info", ConstatFinalUtil.INFO_JSON.get("0"));
			/*存储data*/
			JSONObject dataJSON = new JSONObject();
			dataJSON.put("id", User.getId() + "");
			dataJSON.put("effect", res + "");
			resultJSON.put("data", dataJSON);
		}else
		{
			resultJSON.put("code", "3");
			resultJSON.put("info", ConstatFinalUtil.INFO_JSON.get("3"));
		}
		return resultJSON;
	}
	/**
	 * 查询一条管理员
	 */
	@Override
	public AUser findOneUserService(Map<String, Object> condMap)
	{
		return this.UserDao.findOne(condMap);
	}
	/**
	 * 查询多条管理员
	 */
	@Override
	public List<AUser> findCondListUserService(PageInfoUtil pageInfoUtil, Map<String, Object> condMap)
	{
		/*为关键字加上%,实现模糊匹配*/
		if(condMap.get("keyword") != null && !"".equalsIgnoreCase(condMap.get("keyword") + ""))
		{
			condMap.put("keyword", "%" + condMap.get("keyword") + "%");
		}
		
		/*分页*/
		if(pageInfoUtil != null)
		{
			/*查询总记录数*/
			condMap.put("pageCount", "true");
			List<AUser> UserList = this.UserDao.findCondList(condMap);
			/*取总记录数*/
			if(UserList.size() == 1)
			{
				pageInfoUtil.setTotalRecord(UserList.get(0).getId());
			}
			/*查询数据*/
			condMap.put("pageCount", "false");
			/*limit ?,?*/
			condMap.put("currentRecord", pageInfoUtil.getCurrentRecord());
			condMap.put("pageSize", pageInfoUtil.getPageSize());
			return this.UserDao.findCondList(condMap);
		}
		/*不分页查询数据*/
		return this.UserDao.findCondList(condMap);
	}
	/*-------管理员操作的实现类结束-------*/
	
	/*-------角色操作的实现类开始-------*/
	/**
	 * 保存一条角色
	 */
	@Override
	public JSONObject saveOneRoleService(ARole Role)
	{
		JSONObject resultJSON = new JSONObject();
		/*影响条数*/
		int res = this.roleDao.save(Role);
		if(res > 0)
		{
			resultJSON.put("code","0");
			resultJSON.put("info", ConstatFinalUtil.INFO_JSON.get("0"));
			/*存储data*/
			JSONObject dataJSON	= new JSONObject();
			dataJSON.put("id", Role.getId() + "");
			dataJSON.put("effect", res + "");
			/*data存放到resultJSON中*/
			resultJSON.put("data", dataJSON);
		}else
		{
			resultJSON.put("code", "1");
			resultJSON.put("info", ConstatFinalUtil.INFO_JSON.get("1"));
		}
		return resultJSON;
	}
	/**
	 * 更新一条角色
	 */
	@Override
	public JSONObject updateOneRoleService(ARole Role)
	{
		JSONObject resultJSON = new JSONObject();
		/*影响条数*/
		int res = this.roleDao.update(Role);
		/*判断*/
		if(res > 0)
		{
			resultJSON.put("code", "0");
			resultJSON.put("info", ConstatFinalUtil.INFO_JSON.get("0"));
			/*存储data*/
			JSONObject dataJSON = new JSONObject();
			dataJSON.put("id", Role.getId() + "");
			dataJSON.put("effect", res + "");
			/*data存放resultJSON*/
			resultJSON.put("data", dataJSON);
		}else
		{
			resultJSON.put("code", "2");
			resultJSON.put("info", ConstatFinalUtil.INFO_JSON.get("2"));
		}
		return resultJSON;
	}
	/**
	 * 删除一条角色
	 */
	@Override
	public JSONObject deleteOneRoleService(ARole Role)
	{
		JSONObject resultJSON = new JSONObject();
		/*影响条数*/
		int res = this.roleDao.delete(Role);
		/*判断*/
		if(res > 0)
		{
			resultJSON.put("code", "0");
			resultJSON.put("info", ConstatFinalUtil.INFO_JSON.get("0"));
			/*存储data*/
			JSONObject dataJSON = new JSONObject();
			dataJSON.put("id", Role.getId() + "");
			dataJSON.put("effect", res + "");
			resultJSON.put("data", dataJSON);
		}else
		{
			resultJSON.put("code", "3");
			resultJSON.put("info", ConstatFinalUtil.INFO_JSON.get("3"));
		}
		return resultJSON;
	}
	/**
	 * 查询一条角色
	 */
	@Override
	public ARole findOneRoleService(Map<String, Object> condMap)
	{
		return this.roleDao.findOne(condMap);
	}
	/**
	 * 查询多条角色
	 */
	@Override
	public List<ARole> findCondListRoleService(PageInfoUtil pageInfoUtil, Map<String, Object> condMap)
	{
		/*为关键字加上%,实现模糊匹配*/
		if(condMap.get("keyword") != null && !"".equalsIgnoreCase(condMap.get("keyword") + ""))
		{
			condMap.put("keyword", "%" + condMap.get("keyword") + "%");
		}
		
		/*分页*/
		if(pageInfoUtil != null)
		{
			/*查询总记录数*/
			condMap.put("pageCount", "true");
			List<ARole> roleList = this.roleDao.findCondList(condMap);
			/*取总记录数*/
			if(roleList.size() == 1)
			{
				pageInfoUtil.setTotalRecord(roleList.get(0).getId());
			}
			/*查询数据*/
			condMap.put("pageCount", "false");
			/*limit ?,?*/
			condMap.put("currentRecord", pageInfoUtil.getCurrentRecord());
			condMap.put("pageSize", pageInfoUtil.getPageSize());
			return this.roleDao.findCondList(condMap);
		}
		/*不分页查询数据*/
		return this.roleDao.findCondList(condMap);
	}
	/*-------角色操作的实现类结束-------*/
	
}
